﻿#ifndef __SS_COLOR_H__
#define __SS_COLOR_H__
#include "../3dMath/ss3dMathDefine.h"

namespace StarSeeker
{

class ssColor4 : public ssFLOAT4
{
public:
	ssColor4(void);
	ssColor4(ssfloat fr, ssfloat fg, ssfloat fb, ssfloat fa);
	ssColor4(const ssColor4 &sf4);
	void operator=(const ssColor4 &sf4);

	operator ssfloat* ();
	operator const ssfloat* () const;

	void Set(ssfloat fr, ssfloat fg, ssfloat fb, ssfloat fa);
	void Set(const ssfloat *fVal);
	void Zero();
	//点乘
	ssfloat Dot(const ssColor4& val) const;
	//叉乘
	ssColor4 Cross(const ssColor4& val) const;
	//近似0向量
	bool IsZero(ssfloat eps = Math3D::gc_EPSILON_E6);
	//两个向量近似相等
	bool IsApproximate(const ssColor4& val, ssfloat eps = Math3D::gc_EPSILON_E6);
	//黑色
	void Black();
	//求模
	ssfloat Length() const;
	//单位化
	void Normalize();

	ssColor4 operator * (ssfloat val) const;
	ssColor4 operator / (ssfloat val) const;
	void operator *= (ssfloat val);
	void operator /= (ssfloat val);
};

}

#endif
